<?php
class JuridicaController extends BaseController
{
	private $fisica;
	
	public function init(){
		parent::init();
		$this->view->disableTabs = array(1,2); //0- Dados da Empresa 1 - Funcionarios 2-Histórico
		$this->view->currentTab  = 0;
	} 
	
    private function popular($obj, $post){
    	$filter = new Zend_Filter_StripTags();
		$obj->ds_nome				= trim($filter->filter($post['dsFantasia']));
        $obj->id_cidade 			= (int) $post['idCidade'];
        $obj->ds_endereco			= trim($filter->filter($post['dsEndereco']));
        $obj->nr_endereco			= trim($filter->filter($post['nrEndereco']));
        $obj->ds_bairro				= trim($filter->filter($post['dsBairro']));
        $obj->ds_complemento		= trim($filter->filter($post['dsComplemento']));
        $obj->ds_caixa_postal		= trim($filter->filter($post['dsCaixaPostal']));
        $obj->nr_telefone			= trim($filter->filter($post['nrTelefone']));
        $obj->nr_fax				= trim($filter->filter($post['nrFax']));
        $obj->ds_razao_social		= trim($filter->filter($post['dsRazaoSocial']));
        $obj->ds_cnpj				= trim($filter->filter($post['dsCnpj']));
        $obj->ds_insc_estadual		= trim($filter->filter($post['dsInscEstadual']));
        $obj->ds_cadastur 			= trim($filter->filter($post['dsCadastur']));
        $obj->ds_outro_documento 	= trim($filter->filter($post['dsDocumento']));
        $obj->nm_outro_documento 	= trim($filter->filter($post['nmDocumento']));
        $obj->ds_site 				= trim($filter->filter($post['dsSite']));
        $obj->id_atuacao 			= (int) $post['idAtuacao'];
    	return $obj;
    }

	private function carregaTelaStatus($operacao, $mensagem){
		$links = array( array('link'=>$this->view->baseUrl ."/juridica/add" , 'descricao'=>"Cadastrar empresa e seus funcionários"),
                        array('link'=>$this->view->baseUrl ."/juridica/index", 'descricao'=>"Listar os empresas válidas"));
        $this->_forward('status', 'util', null,
                       	array(	'operacao'=>$operacao,
                  		  		'mensagem'=>$mensagem,
                          		'links'   =>$links));
        return;			
	}     
    
	function addAction() {
		$this->view->linkManual = "/public/manual/manual_cadastro_empresa.html";
        $this->view->title = "Cadastrar cliente";
        $juridica = new Juridica();
        $this->view->juridica=$juridica;
        $this->view->action = $this->view->baseUrl.'/juridica/add';
		$this->view->buttonLabelJuridica = 'Cadastrar';
        if (strtolower($_SERVER['REQUEST_METHOD']) == 'post'){
        	$juridica->id_juridica = null;
        	$juridica->id_pessoa   = null;
        	$juridica=$this->popular($juridica, $this->_request->getPost());
        	$juridica->salvar();
        	$this->view->currentTab=1;
        	$this->_redirect('../edit/?id='.$juridica->id_juridica);
        	return;
        }
        else{
			$this->render();
        }
	}    

    public function indexAction(){
    	$this->view->linkManual = "/public/manual/manual_consulta_empresa.html";
		$this->view->title = "Consultar Cliente";
    	$this->view->action = $this->view->baseUrl . '/juridica/index';
    	$this->view->linkPrincipal = $this->view->baseUrl;   	
    	$empresa 	= "";
       	$documento	= "";
       	$idAtuacao  = 0;
       	$idPais		= 0;
       	$idEstado   = 0;
       	$idCidade   = 0;
        $this->view->juridica = new stdClass();
		$this->view->juridica->empresa 	= "";
		$this->view->juridica->documento	= "";
		$this->view->juridica->idAtuacao 	= null;
		$this->view->juridica->idPais 		= null;
		$this->view->juridica->idEstado 	= null;
		$this->view->juridica->idCidade 	= null;
		$this->view->dadosConsulta 			= null;
		if (strtolower($_SERVER['REQUEST_METHOD']) == 'get' && $this->_request->getParam('btConsultar')=='Consultar'){
			$empresa 	= trim($this->filter->filter($this->_request->getParam('empresa')));
			$documento 	= trim($this->filter->filter($this->_request->getParam('documento')));
			$idAtuacao 	= (int)$this->_request->getParam('idAtuacao');
			$idPais 	= (int)$this->_request->getParam('idPais');
			$idEstado 	= (int)$this->_request->getParam('idEstado');
			$idCidade 	= (int)$this->_request->getParam('idCidade');
			$juridica   = new Juridica(); 			
			$this->view->dadosConsulta = $juridica->buscar($empresa, $documento, null, $documento, $idCidade, $idEstado, $idPais, $idAtuacao, 1, 1);
			$this->view->juridica->empresa 	= $empresa;
			$this->view->juridica->documento	= $documento;
			$this->view->juridica->idAtuacao 	= $idAtuacao;
			$this->view->juridica->idPais 		= $idPais;
			$this->view->juridica->idEstado 	= $idEstado;
			$this->view->juridica->idCidade 	= $idCidade;
			if ($juridica->qtdReg == 0){
				$this->view->mensagem_alerta="Dados não encontrados para a pesquisa realizada.";
			}
		}
		$this->render();
    }

	function excluirAction(){
		$id = (int)$this->_getParam('id');
		if ($id > 0){
			$juridica = new Juridica();
			$juridica->excluir($id, $this->auth->idUsuario);
			$operacao = "Excluir empresa";
        	$mensagem = "Empresa excluida com sucesso!";
        	$this->carregaTelaStatus($operacao, $mensagem);
            return;
		}
		$this->render();
	}
	
	function editAction(){	
        $this->view->linkManual = "/public/manual/manual_editar_empresa.html";
		$this->view->action = $this->view->baseUrl.'/juridica/edit';
		$this->view->disableTabs = null; //Habilita as abas Funciários e Histórico na VIEW
		$this->view->currentTab = (int) $this->_request->getParam('tabIndex'); 
		$id = (int) $this->_request->getParam('id');
		$id_fisica = 0;
		$this->fisica = new Fisica(); 
		$juridica = new Juridica();
		if ($id==0){ 
			$id_fisica = (int) $this->_request->getParam('id_fisica');
		} 
		$this->view->title = "Alterando empresa";
		$this->view->buttonLabelJuridica = 'Salvar';
		//Label do botão pessoa física
		if ($this->nvl($this->_request->getPost('id_fisica'), 0)!=0 || $this->nvl($this->_request->getParam('id_fisica'), 0)!=0){
			$this->view->buttonLabelFisica   = 'Salvar';
		}else {
			$this->view->buttonLabelFisica   = 'Adicionar';
		}	
		$alerta = null;
		if (strtolower($_SERVER['REQUEST_METHOD']) == 'post'){
			$id = (int)$this->_request->getPost('idJuridica');
			$juridica->load($id);
			$this->view->title = $juridica->getNomeFormatado();
			switch ($this->get_post_action('salvar_juridica', 'salvar_funcionario', 'excluir_registro')) {
				case 'salvar_juridica':
					$juridica=$this->popular($juridica, $this->_request->getPost());
					$alerta = $juridica->is_validate();
					if ($alerta['erro'] == 0){
		        		$juridica->salvar();
						$this->carregaTelaStatus($this->view->title, "Empresa alterada com sucesso!");
		        		return;
					}			
					break;
				case 'salvar_funcionario':
					$this->view->currentTab = 1;
					$this->fisica->load((int)$this->_request->getPost('id_fisica'));
			        $this->popularFisica($this->_request->getPost());
			        $this->fisica->id_juridica = $juridica->id_juridica;
			        $this->fisica->cidade->id_cidade = $juridica->cidade->id_cidade;
			        if ($this->fisica->nr_telefone==""){
			        	$this->fisica->nr_telefone = $juridica->nr_telefone;
			        }
			        $alerta = $this->fisica->is_validate();
			        if ($alerta['erro'] == 0){
			        	$this->fisica->salvar();					
			        } 
			        break;	
				case 'excluir_registro':
					$this->view->currentTab = 1;
					$id_fisica = $this->_request->getPost('excluir_registro');
					$this->fisica->excluir($id_fisica, $this->auth->idUsuario);
					break;
			}
		}else{
			$msg_erro = null;
			if ($id_fisica!=0){
				$this->fisica->load($id_fisica);				
				$id = $this->nvl($this->fisica->id_juridica, 0);
				if ($id==0){
					$msg_erro = 'Não foi possível encontrar o participante solicitado.'.(($id_fisica!=0) ? $id_fisica : "");
				} else {
					$this->view->currentTab = 1;
				}	
			}
			$juridica->load($id);
			if ($juridica->id_juridica==0){
				$this->carregaTelaStatus($this->view->title, 'Não encontrado a empresa selecionada');
				if ($msg_erro==null){
					$msg_erro = 'Não foi possível encontrar a empresa participante solicitada.'.(($id!=0) ? $id : "");
				}
				$this->view->mensagem_erro=$msg_erro;
				return;
			} else {
				$this->view->title = $juridica->getNomeFormatado();
			}
		}
		$this->view->juridica=$juridica;
		$this->view->fisica  =$this->fisica;
       	$this->view->dadosConsulta=$this->fisica->buscar(null, null, null, $juridica->id_juridica, true);
       	$this->view->mensagem_erro = null;
       	if (is_array($alerta) && $alerta['erro'] != 0){
			$this->view->mensagem_erro=$alerta['mensagem'];
       	}       		
		$this->render();
	}
	
    private function popularFisica($post){
    	$this->fisica->id_fisica 			= (int) $post['id_fisica'];
		$this->fisica->ds_cpf 				= trim($this->filter->filter($post['dsCpf']));
		$this->fisica->ds_rg 				= trim($this->filter->filter($post['dsRg']));
		$this->fisica->ds_nome 				= trim($this->filter->filter($post['primeiro_nome']));
		$this->fisica->ds_ultimo_nome		= trim($this->filter->filter($post['ultimo_nome']));
		$this->fisica->ds_nome_credencial 	= $this->fisica->ds_nome.' '.$this->fisica->ds_ultimo_nome;
		$this->fisica->ds_email				= trim($this->filter->filter($post['dsEmail']));
		$this->fisica->sexo->load((int) $post['idSexo']);
		$this->fisica->civil->load((int) $post['idCivil']);
        $this->fisica->nr_telefone			= trim($this->filter->filter($post['nrTelefoneFisica']));
        $this->fisica->nr_celular			= trim($this->filter->filter($post['nrCelular']));
    }	
}
		

/*	index
 * 		if ($dsEmpresa != "")
    	    	$this->adicionaParametros("dsEmpresa",$dsEmpresa);
        	if ($dsCnpj)
        		$this->adicionaParametros("dsCnpj", $dsCnpj);
        	if ($dsCadastur)
        		$this->adicionaParametros("dsCadastur", $dsCadastur);
   			if ($idAtuacao)
        		$this->adicionaParametros("idAtuacao", $idAtuacao);
        	if ($idPais)
        		$this->adicionaParametros("idPais", $idPais);
        	if ($idEstado)
        		$this->adicionaParametros("idEstado", $idEstado);
			if ($idCidade)
				$this->adicionaParametros("idCidade", $idCidade);
			$this->view->ordemAtual=$order;
			$this->view->asc=$asc;
			$this->view->parametrosConsulta .= $this->parametrosConsulta;*/		
		
		
		/* EDIT
			$this->montarParametros($this->_getAllParams());
			$this->_order = (int) (is_null($this->filter->filter($this->_getParam('order'))) ? $this->filter->filter($this->_getParam('order')) : 1);
       	 	$this->_asc   = (int) (is_null($this->filter->filter($this->_getParam('asc'  ))) ? $this->filter->filter($this->_getParam('asc'  )) : 0);    	 	
       	 	$fisica = new Fisica();
       	 	$this->view->dadosConsulta=$fisica->buscar(null, null, null, null, null, null, $this->_order, $this->_asc, $juridica->id_juridica);
			$this->view->ordemAtual=$this->_order;
			$this->view->asc=$this->_asc;
			$this->view->parametrosConsulta .= $this->parametrosConsulta;
		}
		$this->render();
	}
}*/